D er Einsatz von Katalogen wurde in der letzten Ausgabe ausgiebig besprochen. An Hand des Listings �LocCatalogDemo.cpp� k�nnen Sie diese Schritte noch einmal mitverfolgen.
Eine lokalisierte String-Klasse
Eingangs ist bereits angeklungen, da� die Locale-Library mehr kann, als nur Sprachdateien verwalten. Wenn Sie sich den Inhalt der Locale-Struktur noch einmal vor Augen halten, f�llt auf, da� sie auch Informationen �ber Ausgabeformate von Datum, Zeit, Geldbetr�gen, Zahlen usw. speichert. Dementsprechend existieren auch Funktionen, die bespielsweise das Datum in jeder landesspezifischen Schreibweise ausgeben k�nnen. Nur leider sind einige dieser sehr n�tzlichen Funktionen in der Praxis eher umst�ndlich zu handhaben, was viele Programmierer bisher abschreckte, davon auch Gebrauch zu machen.
Voll integriert: Hinter dem Projekteintrag loccatalog.cd verbirgt sich der Aufruf des Katalog-Compilers FlexCat aus StormC heraus � Kommandozeilen ade! |
Deshalb finden Sie begleitend zu diesem Artikel eine String-Klasse in C++, welche alle Funktionen der Locale-Library kapselt. Zu ihren Features z�hlen beispielsweise: Wandlungen zwischen Gro�- und Kleinschreibung. Die Funktionen wirken sich auch auf deutsche (oder andere) Umlaute aus. Zeichenketten wie "2.303. 302,002" werden korrekt in Flie�kommawerte umgewandelt. Standardtexte wie Wochentage und Monatsnamen stehen sofort in jeder Sprache zur Verf�gung. Last but not least ist sie so implementiert, da� das Kopieren kompletter Speicherinhalte etwa bei einer Zuweisung m�glichst vermieden wird. Sie k�nnen diese Klasse in Ihren Programmen verwenden, als sei �string� ein in C++ eingebauter Typ. Zuweisungen, Vergleiche, Verkettung, Substrings, Ein- und Ausgabe durch Streams � an alles wurde gedacht. Das Beispielprogramm �StringDemo� demonstriert einige der Features dieser Klasse. Eine vollst�ndige Dokumentation ist als Amiga-Guide auf unserer CD verf�gbar.
Kataloge erzeugen mit StormC
Damit Sie sich nicht auch noch um die Bedienung des Katalog-Compilers k�mmern m�ssen, finden Sie auf unserer CD fertige Make-Skripte f�r StormC. Diese basieren auf dem Katalog-Compiler �FlexCat� von Jochen Wiedmann. Alles was Sie tun m�ssen, ist eine Katalogbeschreibung zu erzeugen, diese dem Projekt hinzuzuf�gen und mit dem Men�punkt �Kompilieren/ �bersetzungs-Skript ausw�hlen� das Skript �FlextCat_cd.srx� auszuw�hlen. Wenn Sie das Projekt nun im Compiler �bersetzen lassen, erzeugt das Skript eine (anfangs noch leere) .ct-Datei sowie einen C++ Quelltext mit zugeh�rigem Headerfile. Dort sind die im Text angesprochenen CtlgMessage-Objekte versteckt. Der Name dieser beiden Dateien leitet sich aus der Katalogbeschreibung ab, indem die Endung �_cat.h� bzw. �_cat.cpp� angeh�ngt wird. Da dieses neue Modul noch nicht �bersetzt wurde, erhalten Sie beim Linke-Vorgang zun�chst einige Fehlermeldungen.
LocCatalogDemo: Einfacher geht's nicht � LocCatalog-Klasse erm�glicht schnell lokalisierte Applikationen |
W�hlen Sie nun als �bersetzungs-Skript f�r die neue .ct-Datei bitte �FlexCat_ct.srx� aus. Jetzt sollte sich das gesamte Projekt fehlerfrei �bersetzen und linken lassen � das Skript erzeugt automatisch einen Katalog, generiert gegebenenfalls eine Schublade �catalogs/<Sprache>� und schreibt den Katalog dort hinein. Ihr Programm kann somit problemlos darauf zugreifen. Damit w�ren wir auch schon am Ende unseres Streifzuges durch die Locale-Library angekommen. Sie finden alle Beispielprogramme zusammen mit einem Installerskript, Projekten f�r StormC, dem Katalog-Compiler FlexCat sowie einer kleinen Klassenbibliothek auf den WWW-Seiten des AMIGA-Magazins (http://www.magnamedia.de/amiga/) bzw. auf unserer CD . Viel Spa� beim Arbeiten mit der Local-Library.
Eine Katalogbeschreibung enth�lt
Kommentare, Kommandozeilen, Beschreibungszeilen
und Textzeilen. Leerzeilen gelten als Fehler �
man schreibt stattdessen einfach einen leeren
Kommentar.
Jede Zeile, die mit einem Semikolon
�;� beginnt, ist ein Kommentar. Mit einer Raute
�#� beginnende Zeilen enthalten Kommandos:
#language <Sprache>
Bestimmt die Sprache der
Katalogbeschreibung (klein schreiben!).
Voreingestellt ist �english�.
#version <Nummer>
Definiert die Version der Kataloge, die sp�ter
ge�ffnet werden sollen. Diese Information gelangt
nicht in den Katalog selbst (dazu gibt es in der
Katalog�bersetzung eine Versionsinformation),
sondern kann als Argument f�r OpenCatalog dienen
(wozu allerdings der Katalog-Compiler diese
Nummer irgendwie im Quelltext zug�nglich machen
mu�). Voreinstellung:
#version 0
#lengthbytes <n>
Durch dieses Kommando werden vor den eigentlichen
String Informationen �ber seine L�nge
untergebracht. Der daf�r reservierte Platz
betr�gt n Bytes. Das Argument mu� zwischen 0 und
4 liegen. Voreinstellung: #lengthbytes 0
�blicherweise befinden sich alle Kommandos im
Kopf der Katalogbeschreibung. Darauf folgen
abwechselnd jeweils Beschreibungszeilen und Text.
Eine Beschreibung entspricht folgendem Schema:
<ID-Bezeichner> (<ID>/<Minimum>/<Maximum>)
ID-Bezeichner ist ein Symbol f�r den darauffolgenden Text, mit dem sp�ter der Text referenziert wird. ID ist eine im Katalog eindeutige Nummer f�r diesen Text. Minimum und Maximum bezeichnen die minimale und maximale L�nge der Zeichenkette (wichtig f�r Katalog�bersetzungen). Die letzten drei Parameter k�nnen auch weggelassen werden, wodurch automatisch eine ID vergeben wird und Minumin und Maximum beliebig sind (wichtig: nur die Parameter weglassen, nicht den Rest �(//)�)
Direkt auf die
Beschreibung mu� der eigentliche Text f�r diese
ID folgen. �bersteigt dessen L�nge eine Zeile,
kann man sich mit einem Backslash �\� am
Zeilenende weiterhelfen. Weiterhin existieren die
gleichen Steuerzeichen wie in C++ (z.B.
�\n� | f�r einen Zeilenvorschub). Zus�tzlich existieren: |
\c | CSI (ASCII 155) markiert Start einer Sequenz von Steuerzeichen in einem CON:-Fenster |
\g | Display Beep (ASCII 7) |
bs25\) | Klammer zu (falls n�tig) |
\\ | Backslash �\� selbst |
\xHH | das ASCII-Zeichen mitdem Hex-Code HH |
\OOO | das ASCII-Zeichen mit dem Oktal-Code OOO Eine typisches Paar von Beschreibungszeile und Text w�re: |
MSG_Welcome (//)
Willkommen zu WorderWord Plus 4.56a SE
Katalog�bersetzungen sind ganz analog aufgebaut.
Es existieren lediglich andere Kommandos; die
Angabe von ID, Minimum und Maximum ist nicht
gestattet. Hier die m�glichen Kommandos:
##version <AmigaDOS-Versionsstring>
Gibt die
Version des Katalogs an. Beispielsweise
##version $VER:worderword.catalog 4.5 (11.11.97)
verpa�t dem Katalog eine Versionsnummer 4.
##language <Katalogsprache>
Spezifiziert die Sprache des
Kataloges, die selbstverst�ndlich eine andere als
in der Katalogbeschreibung sein sollte.
Katalogsprache und -version m�ssen angegeben
werden.
##codeset <Codierungsnummer>
Noch unbenutzt, immer 0 eintragen oder nicht benutzen.
##chunk <IFF-ID> <Text>
Kataloge sind
IFF-Dateien. Dieser Befehl f�gt einen IFF-Chunk
mit der angegebenen ID und dem Text als Inhalt
dem Katalog hinzu. Beispielsweise kann eine
AUTH-Chunk Informationen �ber den Autor einer
IFF-Datei speichern:
##chunk AUTH German catalog by Hans M�ller
Dieser Befehl ist allerdings eine Erweiterung von FlexCat.
� Copyright by MagnaMedia Verlag AG, Haar bei M�nchen
Ver�ffentlichung und Vervielf�ltigung nur mit schriftlicher Genehmigung des Verlags